import md5 from 'md5'

export default {
    // 获取屏幕宽度
    winWidth() {
        return window.innerWidth
    },
    // 设置rem
    rem() {
        var width = this.winWidth() / 10
        if (width > 54) width = 54
        document.querySelector('html').style.fontSize = width + 'px'
    },
    // 去除x5内核浏览器下拉滑动
    clearX5Move() {
        window.addEventListener('touchmove', function (e) {
            e.preventDefault()
            e.stopPropagation()
        })
    },
    // 获取元素距离顶部的距离
    getTopDistance(elem) {
        var top = 0
        function getOffsetTop(elem) {
            if (elem.offsetParent) {
                getOffsetTop(elem.offsetParent)
            }
            top += elem.offsetTop
        }
        getOffsetTop(elem)
        return top
    },
    // 获取md5
    getMd5Sign(postData, orders, md5ConfigStr) {
        var values = [md5ConfigStr]
        orders.splice(0, 0, 'apiVersion', 'devName')
        for (var i = 0; i < orders.length; i++) {
            // 图片base64数据一律不参加md5加密
            var key = orders[i]
            var value = postData[key]
            value != null && values.push(value)
        }
        return md5(values.join('|'))
    },
    // 判断客户端
    platform() {
        var u = navigator.userAgent
        return {
            // android终端或者uc浏览器
            android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1,
            // 是否为iPhone或者QQHD浏览器
            iPhone: u.indexOf('iPhone') > -1,
            // 是否iPad
            iPad: u.indexOf('iPad') > -1,
            // 是否微信
            wechat: u.indexOf('MicroMessenger') > -1
        }
    },
    // 横屏提示
    orientationchangeHint() {
        window.addEventListener('orientationchange', () => {
            var { orientation } = window
            if (orientation == 90 || orientation == -90) {
                $toast.show('为了您的正常使用，请在竖屏下浏览')
            }
        })
    }
}

/**
 * 改进的JSON.parse，避免报错
 * @param {*string} string 要解析的字符串
 * @param {*object} errData 如果解析错误，返回要取的值
 */
export function jsonParse(string, errData) {
    try {
        return JSON.parse(string)
    } catch (err) {
        return errData || {}
    }
}